<?php

namespace Unl\HomologacionBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;


/**
* @ORM\Entity(repositoryClass="Unl\HomologacionBundle\Repository\PeticionHomologacionRepository")
*/
class PeticionHomologacion
{
    /**
    * @ORM\Id
    * @ORM\Column(type="bigint")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;
        
    /**
    * @ORM\Column(type="string", length=100, nullable=true)
    * 
    */
    protected $numeroOficio;
    
    
    /**
    * @ORM\Column(type="string", length=100, nullable=true)
    * 
    */
    protected $escalaMinima;
    
    
        /**
    * @ORM\Column(type="string", length=100, nullable=true)
    * 
    */
    protected $escalaMaxima;
    
   /**
    * @ORM\Column(type="string", length=100, nullable=true)
    * 
    */
    protected $tipoEscala;
    
    
    /**
    * @ORM\Column(type="text", nullable=true)
    */
    protected $resumen;
    
    
    /**
    * @ORM\Column(type="integer", nullable=true)
    * @Assert\Type(type="integer", message="El valor {{ value }} no es un {{ type }} válido." )
    */
    protected $numeroModulo;
    
    
    /**
    * @ORM\Column(type="integer", nullable=true)
    * @Assert\Type(type="integer", message="El valor {{ value }} no es un {{ type }} válido." )
    */
    protected $nivelHomologado;
    
    
    /**
    * @ORM\Column(type="string", length=100, nullable=true)
    * 
    */
    protected $universidadOrigen;
    
    /**
    * @ORM\Column(type="boolean", nullable=true)
    * 
    */
    protected $finalizado;
    
        
    /**
    * @ORM\Column(type="boolean", nullable=true)
    * 
    */
    protected $guardada;
    
    /**
    * @ORM\Column(type="boolean", nullable=true)
    * 
    */
    protected $archivado;
    
    
    /**
    * @ORM\Column(type="string", length=100, nullable=true)
    * 
    */
    protected $carreraOrigen;

    
    /**
    * @ORM\ManyToOne(targetEntity="MallaCurricular", inversedBy="peticionesHomologacion")
    * @ORM\JoinColumn(name="mallaDestino_id", referencedColumnName="id")
    */
    protected $mallaDestino;

    
    /**
    * @ORM\ManyToOne(targetEntity="MallaCurricular", inversedBy="peticionesHomologacion")
    * @ORM\JoinColumn(name="mallaOrigen_id", referencedColumnName="id")
    */
    protected $mallaOrigen;
   
    
    /**
    * @ORM\ManyToOne(targetEntity="Persona", inversedBy="peticionesHomologacion", cascade={"persist"})
    * @ORM\JoinColumn(name="estudiante_id", referencedColumnName="id")
    */
    protected $estudiante;

    /**
    * @ORM\ManyToOne(targetEntity="Persona", inversedBy="peticionesHomologacion")
    * @ORM\JoinColumn(name="docente_id", referencedColumnName="id")
    */
    protected $docente;

    /**
    * @ORM\OneToMany(targetEntity="RegistroHomologacion", mappedBy="peticionHomologacion", cascade={"all"})
    */
    protected $registrosHomologacion;
   
    
    /**
    * @ORM\OneToMany(targetEntity="RegistroProceso", mappedBy="peticionHomologacion", cascade={"all"})
    */
    protected $registrosProceso;
   
    /**
    * @ORM\OneToMany(targetEntity="RegistroCalificacion", mappedBy="peticionHomologacion")
    */
    protected $registrosCalificacion;
    
    /**
    * @ORM\ManyToOne(targetEntity="RegistroProceso", inversedBy="peticionHomologacion",  cascade={"all"})
    * @ORM\JoinColumn(name="estadoActual_id", referencedColumnName="id")
    */
    protected $estadoActual;
       
        
    /**
    * @ORM\ManyToOne(targetEntity="Universidad", inversedBy="peticionesHomologacion")
    * @ORM\JoinColumn(name="universidad_id", referencedColumnName="id")
    */
    protected $universidad;
    
    
    /**
    * @ORM\ManyToOne(targetEntity="Carrera", inversedBy="peticionesHomologacion")
    * @ORM\JoinColumn(name="carrera_id", referencedColumnName="id")
    */
    protected $carrera;
    
    /**
    * @ORM\ManyToOne(targetEntity="Carrera", inversedBy="peticionesHomologacion")
    * @ORM\JoinColumn(name="carreraDestino_id", referencedColumnName="id")
    */
    protected $carreraDestino;
    

    public function __construct()
    {
        $this->registrosHomologacion = new \Doctrine\Common\Collections\ArrayCollection();
        $this->registrosCalificacion = new \Doctrine\Common\Collections\ArrayCollection();
        $this->registrosProceso = new \Doctrine\Common\Collections\ArrayCollection();
        $this->estudiante = new Persona();
        
    }
    
    /**
     * Get id
     *
     * @return bigint 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set mallaDestino
     *
     * @param Unl\HomologacionBundle\Entity\MallaCurricular $mallaDestino
     */
    public function setMallaDestino( $mallaDestino)
    {
        $this->mallaDestino = $mallaDestino;
    }

    /**
     * Get mallaDestino
     *
     * @return Unl\HomologacionBundle\Entity\MallaCurricular 
     */
    public function getMallaDestino()
    {
        return $this->mallaDestino;
    }

    /**
     * Set mallaOrigen
     *
     * @param Unl\HomologacionBundle\Entity\MallaCurricular $mallaOrigen
     */
    public function setMallaOrigen($mallaOrigen)
    {
        $this->mallaOrigen = $mallaOrigen;
    }

    /**
     * Get mallaOrigen
     *
     * @return Unl\HomologacionBundle\Entity\MallaCurricular 
     */
    public function getMallaOrigen()
    {
        return $this->mallaOrigen;
    }

    /**
     * Set estudiante
     *
     * @param Unl\HomologacionBundle\Entity\Persona $estudiante
     */
    public function setEstudiante($estudiante)
    {
        $this->estudiante = $estudiante;
    }

    /**
     * Get estudiante
     *
     * @return Unl\HomologacionBundle\Entity\Persona 
     */
    public function getEstudiante()
    {
        return $this->estudiante;
    }

    /**
     * Set docente
     *
     * @param Unl\HomologacionBundle\Entity\Persona $docente
     */
    public function setDocente($docente)
    {
        $this->docente = $docente;
    }

    /**
     * Get docente
     *
     * @return Unl\HomologacionBundle\Entity\Persona 
     */
    public function getDocente()
    {
        return $this->docente;
    }

    /**
     * Add registrosHomologacion
     *
     * @param Unl\HomologacionBundle\Entity\RegistroHomologacion $registrosHomologacion
     */
    public function addRegistroHomologacion( $registroHomologacion)
    {
        $this->registrosHomologacion->add($registroHomologacion);
        $registroHomologacion->setPeticionHomologacion($this);
    }
    
    public function setRegistrosHomologacion($registrosHomologacion)
    {        
        foreach ($registrosHomologacion as $registroHomologacion) {
            $registroHomologacion->setPeticionHomologacion($this);
        }
        $this->registrosHomologacion = $registrosHomologacion;
    }
    
    
    /**
     * Get registrosHomologacion
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getRegistrosHomologacion()
    {
        return $this->registrosHomologacion;
    }

    /**
     * Add registrosCalificacion
     *
     * @param Unl\HomologacionBundle\Entity\RegistroCalificacion $registrosCalificacion
     */
    public function addRegistroCalificacion(\Unl\HomologacionBundle\Entity\RegistroCalificacion $registroCalificacion)
    {
        $this->registrosCalificacion->add($registroCalificacion);
        $registroCalificacion->setPeticionHomologacion($this);
        
    }

    /**
     * Get registrosCalificacion
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getRegistrosCalificacion()
    {
        return $this->registrosCalificacion;
    }

    /**
     * Set numeroOficio
     *
     * @param string $numeroOficio
     */
    public function setNumeroOficio($numeroOficio)
    {
        $this->numeroOficio = $numeroOficio;
    }

    /**
     * Get numeroOficio
     *
     * @return string 
     */
    public function getNumeroOficio()
    {
        return $this->numeroOficio;
    }
    
    /**
     * Set universidadOrigen
     *
     * @param string $universidadOrigen
     */
    public function setUniversidadOrigen($universidadOrigen)
    {
        $this->universidadOrigen = $universidadOrigen;
    }

    /**
     * Get universidadOrigen
     *
     * @return string 
     */
    public function getUniversidadOrigen()
    {
        return $this->universidadOrigen;
    }

    /**
     * Set carreraOrigen
     *
     * @param string $carreraOrigen
     */
    public function setCarreraOrigen($carreraOrigen)
    {
        $this->carreraOrigen = $carreraOrigen;
    }

    /**
     * Get carreraOrigen
     *
     * @return string 
     */
    public function getCarreraOrigen()
    {
        return $this->carreraOrigen;
    }

    /**
     * Add registrosProceso
     *
     * param Unl\HomologacionBundle\Entity\RegistroProceso $registrosProceso
     */
    public function addRegistroProceso($registroProceso)
    {
        $this->registrosProceso->add($registroProceso);
        $registroProceso->setPeticionHomologacion($this);
    }
    
    public function setRegistrosProceso($registrosProceso)
    {        
        foreach ($registrosProceso as $registroProceso) {
            $registroProceso->setPeticionHomologacion($this);
        }
        $this->registrosProceso = $registrosProceso;
    }
    

    /**
     * Get registrosProceso
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getRegistrosProceso()
    {
        return $this->registrosProceso;
    }

    /**
     * Set universidad
     *
     * @param Unl\HomologacionBundle\Entity\Universidad $universidad
     */
    public function setUniversidad($universidad)
    {
        $this->universidad = $universidad;
    }

    /**
     * Get universidad
     *
     * @return Unl\HomologacionBundle\Entity\Universidad 
     */
    public function getUniversidad()
    {
        return $this->universidad;
    }

    /**
     * Set carrera
     *
     * @param Unl\HomologacionBundle\Entity\Carrera $carrera
     */
    public function setCarrera($carrera)
    {
        $this->carrera = $carrera;
    }

    /**
     * Get carrera
     *
     * @return Unl\HomologacionBundle\Entity\Carrera 
     */
    public function getCarrera()
    {
        return $this->carrera;
    }

    /**
     * Set estadoActual
     *
     * @param Unl\HomologacionBundle\Entity\RegistroCalificacion $estadoActual
     */
    public function setEstadoActual( $estadoActual)
    {
        $this->estadoActual = $estadoActual;
    }

    /**
     * Get estadoActual
     *
     * @return Unl\HomologacionBundle\Entity\RegistroCalificacion 
     */
    public function getEstadoActual()
    {
        return $this->estadoActual;
    }

    /**
     * Set carreraDestino
     *
     * @param Unl\HomologacionBundle\Entity\Carrera $carreraDestino
     */
    public function setCarreraDestino($carreraDestino)
    {
        $this->carreraDestino = $carreraDestino;
    }

    /**
     * Get carreraDestino
     *
     * @return Unl\HomologacionBundle\Entity\Carrera 
     */
    public function getCarreraDestino()
    {
        return $this->carreraDestino;
    }
    


    /**
     * Set escalaMinima
     *
     * @param string $escalaMinima
     */
    public function setEscalaMinima($escalaMinima)
    {
        $this->escalaMinima = $escalaMinima;
    }

    /**
     * Get escalaMinima
     *
     * @return string 
     */
    public function getEscalaMinima()
    {
        return $this->escalaMinima;
    }

    /**
     * Set escalaMaxima
     *
     * @param string $escalaMaxima
     */
    public function setEscalaMaxima($escalaMaxima)
    {
        $this->escalaMaxima = $escalaMaxima;
    }

    /**
     * Get escalaMaxima
     *
     * @return string 
     */
    public function getEscalaMaxima()
    {
        return $this->escalaMaxima;
    }

    /**
     * Set tipoEscala
     *
     * @param string $tipoEscala
     */
    public function setTipoEscala($tipoEscala)
    {
        $this->tipoEscala = $tipoEscala;
    }

    /**
     * Get tipoEscala
     *
     * @return string 
     */
    public function getTipoEscala()
    {
        return $this->tipoEscala;
    }
    
    
     public function __toString()
    {
        return $this->numeroOficio.' '.$this->estudiante;
    }

    /**
     * Set numeroModulo
     *
     * @param integer $numeroModulo
     */
    public function setNumeroModulo($numeroModulo)
    {
        $this->numeroModulo = $numeroModulo;
    }

    /**
     * Get numeroModulo
     *
     * @return integer 
     */
    public function getNumeroModulo()
    {
        return $this->numeroModulo;
    }

    /**
     * Set nivelHomologado
     *
     * @param integer $nivelHomologado
     */
    public function setNivelHomologado($nivelHomologado)
    {
        $this->nivelHomologado = $nivelHomologado;
    }

    /**
     * Get nivelHomologado
     *
     * @return integer 
     */
    public function getNivelHomologado()
    {
        return $this->nivelHomologado;
    }

    /**
     * Set finalizado
     *
     * @param boolean $finalizado
     */
    public function setFinalizado($finalizado)
    {
        $this->finalizado = $finalizado;
    }

    /**
     * Get finalizado
     *
     * @return boolean 
     */
    public function getFinalizado()
    {
        return $this->finalizado;
    }
    
  
    /**
     * Set guardada
     *
     * @param boolean $guardada
     */
    public function setGuardada($guardada)
    {
        $this->guardada = $guardada;
    }

    /**
     * Get guardada
     *
     * @return boolean 
     */
    public function getGuardada()
    {
        return $this->guardada;
    }
    
    
      /**
     * Set resumen
     *
     * @param text $resumen 
     */
    public function setResumen($resumen)
    {
        $this->resumen = $resumen;
    }

    /**
     * Get resumen
     *
     * @return text 
     */
    public function getResumen()
    {
        return $this->resumen;
    }

    
    
    /**
     * Set archivado
     *
     * @param boolean $archivado
     */
    public function setArchivado($archivado)
    {
        $this->archivado= $archivado;
    }

    /**
     * Get archivado
     *
     * @return boolean 
     */
    public function getArchivado()
    {
        return $this->archivado;
    }
}